package 系统复习.面试题.数组_字符串;

/**
 * 给定一个包含小写英文字母的字符串 s 以及一个矩阵 shift，其中 shift[i] = [direction, amount]：
 * direction 可以为 0 （表示左移）或 1 （表示右移）。
 * amount 表示 s 左右移的位数。
 * 左移 1 位表示移除 s 的第一个字符，并将该字符插入到 s 的结尾。
 * 类似地，右移 1 位表示移除 s 的最后一个字符，并将该字符插入到 s 的开头。
 * 对这个字符串进行所有操作后，返回最终结果。
 */
public class L1427 {

    public String stringShift(String s, int[][] shift) {
        int num = 0;
        for (int i = 0; i < shift.length; i++) {
            if (shift[i][0] == 0) {
                num += shift[i][1];
            } else {
                num -= shift[i][1];
            }
        }

        num = num % s.length();
        // 左移
        if (num > 0) {
            s = s.substring(num, s.length()) + s.substring(0,num);
        } else if (num < 0) {
            s = s.substring(s.length() + num , s.length()) + s.substring(0, s.length() + num);
        }
        return s;
    }

    public static void main(String[] args) {
        L1427 l1427 = new L1427();
        System.out.println(l1427.stringShift("abc", new int[][]{{0, 1}, {1, 2}}));
    }

}
